문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 UNIX/Microsoft Windows (문단 편집) === WSL 1 === [[마이크로소프트]]가 2015년 11월 [[Windows 10|윈도우 10]]의 RS1 업데이트를 발표하며 나온 시스템. [[Linux|리눅스]]의 주요 배포판인 [[우분투]]의 개발사 캐노니컬과 협력하여 리눅스 서브시스템을 NT 커널 내부에 탑재하였다. API 수준에서 [[Linux|리눅스]]와 호환될 뿐만 아니라 [[셸(컴퓨터)|Bash]]도 사용 가능하며, 리눅스용 ELF 바이너리를 컴파일 없이 리눅스와 동일한 절차로 바로 설치해 실행시킬 수 있다. 윈도우에 기본으로 들어있는 시스템은 아니지만 [[Microsoft Store]]에서 [[https://www.microsoft.com/store/productId/9P9TQF7MRM4R|무료로 다운]]받을 수 있다. 현재 [[우분투]], [[데비안]], [[openSUSE]], [[칼리 리눅스]]가 지원되고 있다. 특기할 만한 점이라면 WSL은 리눅스 커널을 사용하는 시스템이 아니라는 것이다. 대신 윈도우 10의 [[Windows NT|NT 커널]] 내부에 추가된 Pico provider 드라이버(lxss.sys, lxcore.sys)를 사용한다. Pico provider는 [[셸(컴퓨터)|Bash]]에서 전송한 리눅스 시스템 콜을 NT API 콜로 변환하거나, 반대로 NT 커널에서 처리한 결과를 리눅스 시스템 콜의 반환 형식으로 변환한다. 즉, NT 커널이 리눅스 커널에 대한 일종의 [[에뮬레이터]] 역할을 하는 것이다.[* 이는 MS Research 팀이 연구한 [[https://www.microsoft.com/en-us/research/project/drawbridge/|DrawBridge]] 프로젝트의 산물이다.][* 따라서, 에뮬레이팅 방식의 한계로 인해 WSL이 모든 리눅스 시스템 콜을 처리하지는 못한다.] 리눅스용 ELF 바이너리는 Win32/UWP 바이너리를 위한 NT process로부터 독립된 Pico process 컨테이너 내에서 실행되며, 리눅스 시스템 콜의 반환 값이 이곳으로 전송된다. 이러한 시스템을 통해 ELF 바이너리를 수정 없이 WSL에서 그대로 실행할 수 있는 것이다. [[와인(소프트웨어)|Wine]]을 역방향으로 구현한 것이라고 생각해볼 수 있다. 또한 리눅스의 기존 파일 시스템을 그대로 사용하기가 어려워 MS가 자체 개발한 파일 시스템이 사용되었는데, 그 종류에는 DriveFS와 VolFS가 있다. DriveFS는 윈도우와의 상호 운용성을 지원하기 위한 파일 시스템으로서, '''/mnt/c''' 또는 '''/mnt/d''' 등으로 마운트되는 것이 특징이다. VolFS는 완전한 리눅스 파일 시스템의 구현을 목적으로 하는 시스템이며, WSL의 '''/home, /bin , /etc''' 등의 디렉토리에 적용되어 있다. 리눅스는 양쪽의 파일시스템을 읽을 수 있지만 윈도우는 윈도우 파일만 읽고 쓸 수 있다. 때문에 VS Code 등의 윈도우 프로그램을 사용할 때는 파일시스템 이용을 할 때에 주의가 필요하다. 리눅스 프로그램 설치를 할 때는 cd ~ 를 통해 우분투 루트를 통한 리눅스 파일 시스템을 이용하고, 직접 프로젝트 파일을 다룰 때에는 /mnt/c/ 를 통한 윈도우 파일시스템으로 나와서 작업을 해야 한다. [[CLion]] 같은 일부 [[통합 개발 환경|IDE]]는 [[Secure Shell|SSH]] 통신을 이용하여 WSL에 설치된 컴파일러로 원격 컴파일하는 기능을 제공하는데, 이를 이용하면 '윈도우에서 개발 + 리눅스에서 컴파일'이라는 두 가지 환경을 동시에 구축할 수도 있다. [[Visual Studio Code]]의 C/C++ 플러그인은 설정 파일(settings.json)에 {{{"C_Cpp.default.intelliSenseMode": "gcc-x64"}}} 또는 {{{"C_Cpp.default.intelliSenseMode": "clang-x64"}}}를 추가하면 WSL에 설치된 [[GCC]]나 [[Clang]] 컴파일러를 기준으로 인텔리센스를 적용한다. 정식으로 지원되는 것은 주로 사용자용 문자 콘솔 위주의 명령어들이지만 X 윈도우 서버 등 그래픽 서버를 설치하면 GNOME 등 리눅스의 GUI 그래픽 어플리케이션도 지원이 되고 백그라운드에서 수행되는 daemon 프로그램도 사용할 수 있다. 다만 일부 커널 레벨의 시스템 권한이 필요한 도구들은 지원되지 않는다. systemd와 snap도 아직은 지원하지 않으니 참고할 것. WSL 2가 발표되었지만 상당한 안정화가 되어 매우 쓸만해졌다. 아직은 WSL 2가 시험단계이므로 도전적이지 않은 사람들은 이쪽을 이용해 보는 것도 좋다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기